/*
   用户登录逻辑流程图：

   1. 开始
      |
   2. 用户输入用户名和密码
      |
   3. 检查用户名和密码是否为空
      |-- 是 --> 提示用户输入不能为空，返回步骤2
      |-- 否 --> 继续
      |
   4. 发送请求到服务器验证用户信息
      |
   5. 检查服务器响应
      |-- 成功 --> 跳转到用户主页
      |-- 失败 --> 提示用户名或密码错误，返回步骤2
      |
   6. 结束
*/

/*
   用户登录逻辑流程图：

   1. 开始
      |
   2. 用户输入用户名和密码
      |
   3. 检查用户名和密码是否为空
      |-- 是 --> 提示用户输入不能为空，返回步骤2
      |-- 否 --> 继续
      |
   4. 检查用户名是否存在
      |-- 否 --> 提示用户名不存在，返回步骤2
      |-- 是 --> 继续
      |
   5. 检查密码是否正确
      |-- 否 --> 提示密码错误，返回步骤2
      |-- 是 --> 继续
      |
   6. 检查用户账户状态
      |-- 被锁定 --> 提示用户账户已被锁定，返回步骤2
      |-- 未激活 --> 提示用户账户未激活，请检查邮箱，返回步骤2
      |-- 正常 --> 继续
      |
   7. 检查用户是否有多重身份验证（MFA）
      |-- 否 --> 继续
      |-- 是 --> 发送MFA验证码
               |-- 用户输入MFA验证码
                     |-- 正确 --> 继续
                     |-- 错误 --> 提示验证码错误，返回步骤7
      |
   8. 发送请求到服务器验证用户信息
      |
   9. 检查服务器响应
      |-- 成功 --> 跳转到用户主页
      |-- 失败 --> 检查失败类型
                      |-- 用户名错误 --> 提示用户名错误，返回步骤2
                      |-- 密码错误 --> 提示密码错误，返回步骤2
                      |-- 账户状态异常 --> 检查账户状态
                                        |-- 被锁定 --> 提示账户被锁定，返回步骤2
                                        |-- 未激活 --> 提示账户未激活，返回步骤2
                      |-- 账户需要MFA验证 --> 继续到步骤7
                      |-- 其他错误 --> 提示系统错误，返回步骤2
      |
   10. 结束
  */
